package com.example.chapter07_client;

import android.net.Uri;
import android.provider.BaseColumns;

/**
 * 客户端访问服务端ContentProvider的元数据常量类
 * 作用：统一管理客户端访问服务端数据时所需的URI、字段名称等信息，
 * 必须与服务端（com.dongnaoedu.chapter07_server）的UserInfoContent保持完全一致，
 * 否则会因信息不匹配导致数据访问失败（如字段名错误、URI错误）
 */
public class UserInfoContent implements BaseColumns {

    /**
     * 服务端ContentProvider的唯一权威名（Authority）
     * 必须与服务端在AndroidManifest.xml中注册的authorities属性完全相同，
     * 是客户端定位服务端ContentProvider的"唯一标识"，若不一致会导致Uri匹配失败
     */
    public static final String AUTHORITIES = "com.dongnaoedu.chapter07_server.provider.UserInfoProvider";

    /**
     * 访问服务端用户数据的完整URI（统一资源标识符）
     * 格式：content:// + 服务端Authority + /数据路径（服务端定义的表路径，这里为"/user"）
     * 完整地址：content://com.dongnaoedu.chapter07_server.provider.UserInfoProvider/user
     * 作用：客户端通过ContentResolver操作（插入/查询/删除等）服务端数据时，
     * 必须传入该URI以指定要访问的服务端数据资源
     */
    public static final Uri CONTENT_URI = Uri.parse("content://" + AUTHORITIES + "/user");

    // 以下为服务端用户表（user）的字段名称常量，必须与服务端数据库表的字段名完全一致
    // 客户端在构造ContentValues（插入/更新数据）或指定查询列（projection）时使用这些常量，
    // 确保与服务端字段匹配，避免因字段名错误导致操作失败

    /**
     * 用户名字段（对应服务端表中的"name"列）
     * 客户端插入或查询用户名时使用该常量作为键
     */
    public static final String USER_NAME = "name";

    /**
     * 年龄字段（对应服务端表中的"age"列）
     * 客户端插入或查询年龄时使用该常量作为键
     */
    public static final String USER_AGE = "age";

    /**
     * 身高字段（对应服务端表中的"height"列）
     * 客户端插入或查询身高时使用该常量作为键
     */
    public static final String USER_HEIGHT = "height";

    /**
     * 体重字段（对应服务端表中的"weight"列）
     * 客户端插入或查询体重时使用该常量作为键
     */
    public static final String USER_WEIGHT = "weight";

    /**
     * 婚姻状态字段（对应服务端表中的"married"列）
     * 客户端插入或查询婚姻状态时使用该常量作为键（通常用布尔值或整数表示）
     */
    public static final String USER_MARRIED = "married";

    /**
     * 实现BaseColumns接口的意义：
     * 继承标准主键字段"_id"（BaseColumns._ID），与服务端表的主键字段保持一致，
     * 便于客户端通过"_id"操作单条数据（如根据ID查询/删除单个用户）
     */
}